package net.sf.rose.exception;

import java.util.HashMap;
import java.util.Map;

/**
 * 功能:数据库异常类型定义码
 * @author fengjian
 * @since 2013/05/30
 */
public enum SystemErrorCode implements ErrorCode {

	/** 数据库操作异常 */
	DAO_ERROR(1000),

	/** 服务层异常 */
	SERVICE_ERROR(2000),

	/** 业务处理层异常 */
	CONTROLLER_ERROR(3000),

	/** 应用级异常 */
	APPLICATION_ERROR(4000),

	/** 用户操作异常 */
	USER_ERROR(5000),

	/** 数据库查询异常 */
	D_SEARCH_ERROR(1001),

	/** 数据库插入异常 */
	D_INSERT_ERROR(1002),

	/** 数据库更新异常 */
	D_UPDATE_ERROR(1003),

	/** 数据库删除异常 */
	D_DELETE_ERROR(1004),

	/** 数据库批处理异常 */
	D_BATCH_ERROR(1005),

	/** 数据库大数据量批处理异常 */
	D_BATCH_QUANTITY_ERROR(1006),

	/** 数据库查询SQL语句创建失败异常 */
	D_SQL_SEARCH_CREATE_ERROR(1011),

	/** 数据库插入SQL语句创建失败异常 */
	D_SQL_INSERT_CREATE_ERROR(1012),

	/** 数据库更新SQL语句创建失败异常 */
	D_SQL_UPDATE_CREATE_ERROR(1013),

	/** 数据库批量SQL语句创建失败异常 */
	D_SQL_BATCH_UPDATE_CREATE_ERROR(1014),

	/** 数据库连接池初始化失败异常 */
	D_DATASOURCE_INITIAL_ERROR(1020),

	/** 数据库连接创建失败异常 */
	D_CONNECTION_CREATE_ERROR(1021),

	/** 数据更新提交至数据库失败异常 */
	D_CONNECTION_COMMIT_ERROR(1022),

	/** 数据库关闭失败异常 */
	D_CONNECTION_CLOSE_ERROR(1023),

	/** 初始化SQL语句库失败异常 */
	D_SQL_FILE_LOAD_ERROR(1030),

	/** SQL语句提取失败异常 */
	D_SQL_GET_ERROR(1031),

	/** SQL语句解析失败异常 */
	D_SQL_RESOLVE_ERROR(1032),

	/** 文件加载失败异常 */
	A_FILE_LOAD_ERROR(2010),

	/** 文件保存失败异常 */
	A_FILE_SAVE_ERROR(2011),

	/** 参数缺失异常 */
	A_PRARAMTER_LOST_ERROR(2051),

	/** 数据转换异常 */
	A_DATA_PARSE_ERROR(2001);

	/** 异常类型定义码 */
	private final int number;

	private SystemErrorCode(int number) {
		this.number = number;
	}

	/**
	 * 返回异常定义码
	 */
	@Override
	public int getNumber() {
		return number;
	}

	private static Map<Integer, String> map = new HashMap<Integer, String>();

	static {
		map.put(1000, "数据库操作异常");
		map.put(2000, "服务层异常");
		map.put(3000, "业务处理层异常");
		map.put(4000, "应用级异常");
		map.put(5000, "用户操作异常");
		map.put(1001, "数据库查询异常");
		map.put(1002, "数据库插入异常");
		map.put(1003, "数据库更新异常");
		map.put(1004, "数据库删除异常");
		map.put(1005, "数据库批处理异常");
		map.put(1006, "数据库大数据量批处理异常");
		map.put(1011, "数据库查询SQL语句创建失败异常");
		map.put(1012, "数据库插入SQL语句创建失败异常");
		map.put(1013, "数据库更新SQL语句创建失败异常");
		map.put(1014, "数据库批量SQL语句创建失败异常");
		map.put(1020, "数据库连接池初始化失败异常");
		map.put(1021, "数据库连接创建失败异常");
		map.put(1022, "数据更新提交至数据库失败异常");
		map.put(1023, "数据库关闭失败异常");
		map.put(1030, "初始化SQL语句库失败异常");
		map.put(1031, "SQL语句提取失败异常");
		map.put(1032, "SQL语句解析失败异常");
		map.put(2010, "文件加载失败异常");
		map.put(2011, "文件保存失败异常");
		map.put(2051, "参数缺失异常");
		map.put(2001, "数据转换异常");
	}

	/**
	 * 返回异常描述
	 */
	public static String getString(int code) {
		return map.get(code);
	}

}
